package com.cn.serverline.lineicp.workshopPlan.entity.request;

import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.util.List;

/**
 * 构型配置表封装类
 *
 * @author 田江余
 * @date 2024年8月11日
 */
@Data
public class ConfigurationConfigResponse {


    private  Info info;

    /**
     * 工位集合
     */
    private List<WorkStation> workStationList;

    /**
     * 工序集合
     */
    private List<Process> processList;

    /**
     * 工位与工序配置
     */
    private List<Config> configList;

    @Data
    public static class  Info{
        /**
         * 产品型号
         */
        private  String productName;

        /**
         * 零组件名称
         */
        @ChineseDescription("零组件名称")
        private String partName;


        /**
         * 阶段名
         */
        @ChineseDescription("阶段名")
        private String stageName;

        /**
         * 版次
         */
        @JsonFormat(shape = JsonFormat.Shape.STRING)
        @ChineseDescription("版次")
        private String versionNum;


        /**
         * 子版本号
         */
        @JsonFormat(shape = JsonFormat.Shape.STRING)
        @ChineseDescription("子版本号")
        private Long subVersionNum;

        /**
         * 构型名称
         */
        @ChineseDescription("构型名称")
        private String configurationName;


    }

    @Data
    public static class WorkStation {

        /**
         * 工位ID
         */
        @ChineseDescription("工位ID")
        @JsonFormat(shape = JsonFormat.Shape.STRING)
        private Long workStationId;

        /**
         * 工位名称
         */
        @ChineseDescription("工位名称")
        private String workStationName;

        /**
         * 工位编号
         */
        @ChineseDescription("工位编号")
        private String workStationNum;

        /**
         * 设备和工具名称集合
         */
        @ChineseDescription("设备名称集合")
        private List<String> equipmentNames;

        /**
         * 设备和工具名称集合
         */
        @ChineseDescription("工具名称集合")
        private List<String> toolNames;

    }



    @Data
    public static class Process {

        /**
         * 工序ID
         */
        @ChineseDescription("工序ID")
        @JsonFormat(shape = JsonFormat.Shape.STRING)
        private Long processId;

        /**
         * 工序编号
         */
        @ChineseDescription("工序编号")
        private String processCode;

        /**
         * 工序名称
         */
        @ChineseDescription("工序名称")
        private String processName;

        /**
         * 工时
         */
        @JsonFormat(shape = JsonFormat.Shape.STRING)
        @ChineseDescription("工时")
        private Long manHour;

        /**
         * 合并类型和工具类型名称集合
         */
        private List<String> typeNames;
    }

    @Data
    public static class Config {
        /**
         * 工位ID
         */
        @ChineseDescription("工位ID")
        @JsonFormat(shape = JsonFormat.Shape.STRING)
        private Long workStationId;

        /**
         * 工艺工序ID
         */
        @ChineseDescription("工艺工序ID")
        @JsonFormat(shape = JsonFormat.Shape.STRING)
        private Long procProcessId;
    }


}
